﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>PluginPanelItem</title>
<meta http-equiv="Content-Type" Content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../styles/styles.css">
<script language="javascript" src='../links.js' type="text/javascript"></script>
</head>
<body>

<h1>PluginPanelItem</h1>
<div class=navbar>
<a href="../index.html">главная</a> |
<a href="index.html">структуры</a> |
<a href="../panelapi/index.html">Panel API</a>
</div>

<div class=shortdescr>
Структура <code>PluginPanelItem</code> описывает элемент файловой системы плагина. Она используется для возвращения информации о файловой системе плагина и для передачи плагину списка файлов для обработки.
</div>

<pre class=syntax>
struct PluginPanelItem
{
  FILETIME CreationTime;
  FILETIME LastAccessTime;
  FILETIME LastWriteTime;
  FILETIME ChangeTime;
  unsigned __int64 FileSize;
  unsigned __int64 AllocationSize;
  const wchar_t *FileName;
  const wchar_t *AlternateFileName;
  const wchar_t *Description;
  const wchar_t *Owner;
  const wchar_t * const *CustomColumnData;
  size_t CustomColumnNumber;
  PLUGINPANELITEMFLAGS Flags;
  struct
  {
    void *Data;
    FARPANELITEMFREECALLBACK FreeData;
  } UserData;
  uintptr_t FileAttributes;
  uintptr_t NumberOfLinks;
  uintptr_t CRC32;
  intptr_t Reserved[2];
};
</pre>

<h3>Элементы</h3>
<div class=descr>
  <div class=dfn>CreationTime</div>
    <div class=dfndescr>Время создания - структура <a href="../winapi/filetime.html">FILETIME</a> содержащая время создания файла. <a class="msdocs">FindFirstFile</a> и <a class="msdocs">FindNextFile</a>
    возвращают время файла в UTC-формате. Эти функции устанавливают элементы FILETIME в ноль, если файловая система, содержащая файл не поддерживает этот временной атрибут.
    Вы можете использовать функцию <a class="msdocs">FileTimeToLocalFileTime</a> для преобразования из UTC в локальное время и тогда использовать
    функцию <a class="msdocs">FileTimeToSystemTime</a> для преобразования локального времени в структуру <a href="../winapi/systemtime.html">SYSTEMTIME</a>
    содержащую отдельные элементы для месяца, дня, года и так далее...</div>
  <div class=dfn>LastAccessTime</div>
    <div class=dfndescr>Структура <a href="../winapi/filetime.html">FILETIME</a> с временем последнего доступа к файлу. Время хранится в UTC формате; элементы структуры установлены в ноль, если файловая система не поддерживает этого свойства.</div>
  <div class=dfn>LastWriteTime</div>
    <div class=dfndescr>Структура <a href="../winapi/filetime.html">FILETIME</a> с временем последней записи в файл. Время хранится в UTC формате; элементы структуры установлены в ноль, если файловая система не поддерживает этого свойства.</div>
  <div class=dfn>ChangeTime</div>
    <div class=dfndescr>Структура <a href="../winapi/filetime.html">FILETIME</a> с временем последнего изменения файла. Время хранится в UTC формате; элементы структуры установлены в ноль, если файловая система не поддерживает этого свойства.</div>
  <div class=dfn>FileSize</div>
    <div class=dfndescr>Размер файла в байтах.</div>
  <div class=dfn>AllocationSize</div>
    <div class=dfndescr>Выделенный размер файла в байтах.</div>
  <div class=dfn>FileName</div>
    <div class=dfndescr>Указатель на строку с именем файла.</div>
  <div class=dfn>AlternateFileName</div>
    <div class=dfndescr>Указатель на строку с альтернативным именем файла. </div>
  <div class=dfn>Description</div>
    <div class=dfndescr>Указывает на описание файла. Плагин может использовать это поле для передачи описания файла Far Manager'у. Если вы не хотите указывать описания, установите <code>Description</code> в <code>NULL</code>. Если плагин
    использует стандартную обработку описаний Far Manager'а, и передал имена описаний Far Manager'у в функции <a href="../exported_functions/getopenpanelinfow.html">GetOpenPanelInfoW</a>, это поле также должно быть <code>NULL</code>.</div>
  <div class=dfn>Owner</div>
    <div class=dfndescr>Указывает на имя владельца файла. Плагин может использовать это поле для передачи имён владельцев файлов Far Manager'у. Если Вам это не нужно, установите это поле в <code>NULL</code>.</div>
  <div class=dfn>CustomColumnData</div>
    <div class=dfndescr>Указывает на массив адресов строк для определённых плагином типов колонок. Первая строка содержит данные для типа колонки C0, вторая - для C1 и т.д. Может быть задано до 100 дополнительных типов колонок от <code>C0</code>
    до <code>C99</code>. Если вы не нуждаетесь в дополнительных типах колонок, установите это поле в <code>NULL</code>.</div>
  <div class=dfn>CustomColumnNumber</div>
    <div class=dfndescr>Число строк с данными о дополнительных типах колонок.</div>
  <div class=dfn>Flags</div>
    <div class=dfndescr>Может быть комбинацией следующих значений (тип <a name="PLUGINPANELITEMFLAGS">PLUGINPANELITEMFLAGS</a>):
    <table class="cont">
    <tr class="cont"><th class="cont" width="40%">Флаг</th><th class="cont" width="60%">Описание</th></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="PPIF_PROCESSDESCR">PPIF_PROCESSDESCR</a></td>
    <td class="cont" width="60%">Использовать внутреннюю обработку описаний Far Manager'а.<br>
    Этот флаг может быть установлен для обрабатываемых файлов в функциях  <a href="../exported_functions/deletefilesw.html">DeleteFilesW</a>, <a href="../exported_functions/getfilesw.html">GetFilesW</a> и
    <a href="../exported_functions/putfilesw.html">PutFilesW</a>. В этом случае Far Manager будет обновлять файлы описаний с именами, возвращёнными в функции <a href="../exported_functions/getopenpanelinfow.html">GetOpenPanelInfoW</a>.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="PPIF_SELECTED">PPIF_SELECTED</a></td>
    <td class="cont" width="60%">Этот флаг отвечает за выделение элемента.<br>
    В функциях <a href="../exported_functions/putfilesw.html">PutFilesW</a>, <a href="../exported_functions/getfilesw.html">GetFilesW</a> и <a href="../exported_functions/processhostfilew.html">ProcessHostFileW</a>, если операция не удалась,
    но часть файлов была успешно обработана, плагин может убрать выделение только с обработанных файлов.<br>
    Для этого плагин должен очистить флаг <code>PPIF_SELECTED</code> у обрабатываемых элементов в переданном функции списке <code>PluginPanelItem</code>.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="PPIF_NONE">PPIF_NONE</a></td>
    <td class="cont" width="60%">Нулевой флаг.</td></tr>
    </table></div>
  <div class=dfn>UserData</div>
    <div class=dfndescr>Это поле может быть использовано плагином для хранения целого значения или указателя на структуру данных.<br>
    В последнем случае, когда <code>UserData.Data</code> указывает на структуру данных и требуется её освобождение, то плагин должен определить функцию <a href="../defs/farpanelitemfreecallback.html">UserData.FreeData</a>, используемую Far Manager'ом для освобождения занятых ресурсов.</div>
  <div class=dfn>FileAttributes</div>
    <div class=dfndescr>Указывает атрибуты найденного файла. Этот элемент может быть комбинацией следующих значений:
    <table class="cont">
    <tr class="cont"><th class="cont" width="40%">Атрибут</th><th class="cont" width="60%">Описание</th></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_ARCHIVE">FILE_ATTRIBUTE_ARCHIVE</a></td>
    <td class="cont" width="60%">Это архивный файл. Приложения должны использовать этот флаг для копирования, архивирования или удаления.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_COMPRESSED">FILE_ATTRIBUTE_COMPRESSED</a></td>
    <td class="cont" width="60%">Файл или каталог сжат. Для файла это означает, что все данные его сжаты, для каталога - что компрессия по умолчанию применяется ко всем его файлам и подкаталогам.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_DIRECTORY">FILE_ATTRIBUTE_DIRECTORY</a></td>
    <td class="cont" width="60%">Это каталог.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_ENCRYPTED">FILE_ATTRIBUTE_ENCRYPTED</a></td>
    <td class="cont" width="60%">Файл или каталог зашифрован. Для файла, это означает, что все данные в файле зашифрованы. Для директория, это означает, что шифрование является умолчанием для вновь созданных файлов и подкаталогов.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_HIDDEN">FILE_ATTRIBUTE_HIDDEN</a></td>
    <td class="cont" width="60%">Файл скрыт. Такой файл не включается в обычный листинг каталога.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_NORMAL">FILE_ATTRIBUTE_NORMAL</a></td>
    <td class="cont" width="60%">У этого файла не установлены другие атрибуты. Это значение корректно только при использовании без остальных флагов.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_OFFLINE">FILE_ATTRIBUTE_OFFLINE</a></td>
    <td class="cont" width="60%">Данные файла не доступны непосредственно. Означает, что реальные данные файла были физически перемещены на устройства хранения.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_READONLY">FILE_ATTRIBUTE_READONLY</a></td>
    <td class="cont" width="60%">Файл только для чтения. Приложения могут читать такой файл, но не могут записывать или удалять его.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_REPARSE_POINT">FILE_ATTRIBUTE_REPARSE_POINT</a></td>
    <td class="cont" width="60%">Каталог является точкой повторной обработки.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_SPARSE_FILE">FILE_ATTRIBUTE_SPARSE_FILE</a></td>
    <td class="cont" width="60%">Файл является т.н. "Sparse file".</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_SYSTEM">FILE_ATTRIBUTE_SYSTEM</a></td>
    <td class="cont" width="60%">Этот файл - часть операционной системы.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_TEMPORARY">FILE_ATTRIBUTE_TEMPORARY</a></td>
    <td class="cont" width="60%">Это временный файл. Приложения должны записывать в такой файл только в крайней необходимости. Большая часть данных файла находится в памяти и не сбрасывается на диск, так как файл будет удален.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_NOT_CONTENT_INDEXED">FILE_ATTRIBUTE_NOT_CONTENT_INDEXED</a></td>
    <td class="cont" width="60%">Этот файл или каталог не будут индексироваться службой индексирования.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="FILE_ATTRIBUTE_VIRTUAL">FILE_ATTRIBUTE_VIRTUAL</a></td>
    <td class="cont" width="60%">Этот файл - виртуальный файл.</td></tr>
    </table></div>
  <div class=dfn>NumberOfLinks</div>
    <div class=dfndescr>Количество жёстких ссылок.</div>
  <div class=dfn>CRC32</div>
    <div class=dfndescr>Контрольная сумма. Far Manager не использует это поле. Если плагин использует это поле, необходимо выставить флаг <a href="openpanelinfo.html">OPIF_USECRC32</a>.</div>
  <div class=dfn>Reserved</div>
    <div class=dfndescr>Поля зарезервированы для будущего использования. Установите в <code>0</code>.</div>
</div>

<h3>Замечания</h3>
<div class=descr>
<ol>
<li>Все данные, выделенные плагином для членов <code>FileName</code>, <code>AlternateFileName</code>, <code>Description</code>, <code>Owner</code> и <code>CustomColumnData</code>, должны быть освобождены им.
Far Manager создаёт копии этих данных в своих внутренних структурах. Таким образом они могут быть освобождены в любой момент после передачи Far Manager'у в
функции <a href="../exported_functions/getfinddataw.html">GetFindDataW</a>.
<li>При запросе файлового объекта с панели Far Manager'а - если файл имеет длинное имя, то полное имя возвращается в элементе <code>FileName</code>, а усеченная версия формата 8.3 сохраняется в <code>AlternateFileName</code>. Иначе <code>AlternateFileName</code> пусто.
<li>При запросе файлового объекта с панели плагина - <code>AlternateFileName</code> может содержать любую строку сформированную плагином, т.е. за содержимое отвечает опрашиваемый плагин.
<li>Не все файловые системы позволяют хранить время создания файла и последнего доступа к нему, и не все системы хранят их одинаково. Например, в файловой системе FAT под Windows NT время создания файла записывается с
разрешением 10 миллисекунд, время последней модификации - 2 секунды, а время доступа - 1 день (то есть, фактически, записывается только дата доступа). На файловой системе NTFS время доступа имеет разрешение 1 час.
</ol>
</div>

<div class=see>Смотрите также:</div>
<div class=seecont>
<a href="index.html">структуры</a>,
<a href="../winapi/win32_find_data.html">WIN32_FIND_DATA</a>,
<a href="../winapi/filetime.html">FILETIME</a>
</div>

</body>
</html>
